package com.bear.fastrepair.http.api

import com.bear.fastrepair.entity.*
import retrofit2.http.*

/**
 * 订单API
 */
interface OrdersService {
    /**
     * 新增订单
     * @param order [NewOrder]
     * @return ResponseInfo
     */
    @POST("order")
    suspend fun addOrder(@Body order: NewOrder): ResponseInfo

    /**
     * 通过 [id] 查询订单详细信息
     * @param id String
     * @return [OrderInfoDetails]
     */
    @GET("order/detailInfo/{id}")
    suspend fun getOrderDetailByID(@Path("id") id: String): OrderInfoDetails

    /**
     * 分页查询订单
     * @param current Int 当前页，1开始
     * @param size Int 每页条数，最大100
     * @param clientName String 客户姓名
     * @param clientTel String 客户电话号码
     * @param employeeId String 分派员工的id
     * @param orderNum String 订单编号
     * @param orderStatus Int 订单状态，0：新增 1：已分派 2：已完成 3：已退回 4：带回 5：带回维修完成 6：已作废
     * @param regionCode String 区域编码
     * @return [OrderInfoPage]
     */
    @GET("order/page")
    suspend fun getOrderInfoPage(
        @Query("current") current: Int,
        @Query("size") size: Int,
        @Query("clientName") clientName: String = "",
        @Query("clientTel") clientTel: String = "",
        @Query("employeeId") employeeId: String = "",
        @Query("orderNo") orderNum: String = "",
        @Query("orderStatus") orderStatus: Int = -1,
        @Query("regionCode") regionCode: String = ""
    ): OrderInfoPage

    /**
     * 分页查询订单
     * @param current Int 当前页，1开始
     * @param size Int 每页条数，最大100
     * @param clientName String 客户姓名
     * @param clientTel String 客户电话号码
     * @param employeeId String 分派员工的id
     * @param orderNum String 订单编号
     * @param orderStatus Int 订单状态，0：新增 1：已分派 2：已完成 3：已退回 4：带回 5：带回维修完成 6：已作废
     * @param orderTotalityStatus Int 订单状态，0：新增 1：已分派 2：已完成 3：已退回 4：带回 5：带回维修完成 6：已作废
     * @param regionCode String 区域编码
     * @return [OrderInfoPage]
     */
    @GET("order/page")
    suspend fun getOrderInfoPageNew(
        @Query("current") current: Int,
        @Query("size") size: Int,
        @Query("clientName") clientName: String? = null,
        @Query("clientTel") clientTel: String? = null,
        @Query("employeeId") employeeId: String? = null,
        @Query("orderNo") orderNum: String? = null,
        @Query("orderStatus") orderStatus: Int? = null,
        @Query("orderTotalityStatus") orderTotalityStatus: Int? = null,
        @Query("regionCode") regionCode: String? = null
    ): OrderInfoPage2

    /**
     * 修改订单
     * @param modifyOrder [ModifyOrder]
     * @param id String
     * @return ResponseInfo
     */
    @PUT("order/{id}")
    suspend fun modifyOrder(@Body modifyOrder: ModifyOrder, @Path("id") id: String): ResponseInfo
}